package org.jeecg.modules.engineering.mapper;

import com.baomidou.mybatisplus.annotation.SqlParser;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.jeecg.modules.engineering.entity.EquipInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.engineering.vo.*;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Repository;

/**
 * @Description: 设备基础信息表
 * @Author: jeecg-boot
 * @Date:   2019-08-15
 * @Version: V1.0
 */
@Repository
public interface EquipInfoMapper extends BaseMapper<EquipInfo> {

    @SqlParser(filter = true)
    List<CollectDataApiParam> collectData(@Param("id") String id);

    @SqlParser(filter = true)
    EquipInfo getByOutEuipCode(String outEquipCode);

    List<EquipStatusReport> findStatusByProjectAndSort(@Param("projectId") String projectId, @Param("sortId") String sortId);

    @SqlParser(filter = true)
    List<EquipInfo> getEquipInfoByCollectorId(@Param("id") String id);

    /**
     * 获取消防系统的设备总数
     * @param projectId
     * @param topSystem
     * @return
     */
    List<EquipStatusReport> findStatusByProjectAndSystem(@Param("projectId") String projectId, @Param("topSystem") String topSystem);


    /**
     * 获取每月的消防事件
     * @param projectId
     * @param topSystem  归属系统
     * @param month   月份
     * @return
     */
    List<EquipEventInfoProcess> findProcessByProjectAndDate(@Param("projectId") String projectId,@Param("topSystem") String topSystem,@Param("month") Date month);

    @SqlParser(filter = true)
    EquipInfo findById(@Param("id") String id);

    @SqlParser(filter = true)
    void batchUpdate(@Param("infos") List<EquipInfo> updateInfos);

    @SqlParser(filter = true)
    int updateSignKeyByCode(@Param("infos") Map<String,String> maps);

    @SqlParser(filter = true)
    List<EquipInfo> selectByNoSignKey();

    List<EquipInfo> findByProjectAndSystem(@Param("departId")String departId, @Param("projectId") String projectId,@Param("topSystem") String topSystem);

    @SqlParser(filter = true)
    long selectCountBySortIds(@Param("ids")List<String> ids, @Param("size")int size);

    @SqlParser(filter = true)
    @Select("SELECT name FROM base_project WHERE id = #{projectId}")
    String selectProjectNameById(@Param("projectId") String projectId);

    List<EquipInfo> selectSqlList(Page<EquipInfo> page, @Param("equipInfo") EquipInfo equipInfo, @Param("ids") List<String> projectIds);
}
